/*****************************************
  实时数据窗口
  author 周翔
  2012-8-25

  以列表形式显示数据时，是显示全部的节点信息，还是根据tree选择的节点显示




  ****************************************/

#ifndef REALDATAWIDGET_H
#define REALDATAWIDGET_H

#include <QWidget>
#include "widget/ZigBeeNodeTreeWidget/zigbeenodetreewidget.h"
#include "realdatarightwidget.h"
#include "model/node.h"
#include "database/database.h"


#include "tools/constant.h"

class RealDataWidget : public QWidget
{
    Q_OBJECT
public:
    explicit RealDataWidget(QWidget *parent = 0);
    ~RealDataWidget();
signals:
    void sig_aFilter(const Filter& n);
public slots:
    void slt_tree_clear();

    /**
     * @brief slt_lineGrap 给折线图发送数据
     * @param adress 地址
     * @param value 值
     */
    void slt_lineGrap(const QString &adress, int value);//对内部提供的封装，接受外部的绘图数据
    /**
     * @brief slt_lineGrap 给折线图发送数据
     * @param name 设备名
     * @param value 值
     */
    void slt_lineGrap(ushort name, int value);
    /**
     * @brief slt_netTopologyBuild 此接口为旧接口，不使用
     * @param value
     */
    void slt_netTopologyBuild(const QString &value);
    /**
     * @brief slt_newNode 新节点
     * @param n
     */
    void slt_newNode(const Node &n);
    /**
     * @brief slt_oldNode 重新加入网络的节点
     * @param n
     */
   // void slt_oldNode(const Node &n);


    /**
     * @brief slt_ChangNodeState
     * @param n
     * @param status
     */
    void slt_ChangNodeState(const Node &n);



    void slt_ChangNodeState(int type, const QString &addr,
                                            const QString &paddr,
                                            ushort _name, bool status);
    /**
     * @brief slt_setListItems 添加列表的信息
     * @param adress  地址
     * @param name 设备名
     * @param value 值
     * @param flag 数据标识
     */
    void slt_setListItems(const QString& adress, int name, int value, int flag);
    /**
     * @brief slt_nodeChange 对外接口，更新树形图 ,更新拓扑图
     * @param name 设备名
     * @param states 状态
     */
    //void slt_nodeChange(ushort name, bool states);



    void slt_updataNodeValue(ushort name,int value);


private slots:
    void slt_setCurrentNode(const QString &adress);//设置当前的工作节点
    void slt_setCurrentNode(ushort name);

private:
    QString m_currentNode;//当前的节点选择项
    ushort m_currentName;//当前节点的设备名

    ZigBeeNodeTreeWidget *ZigBeeTree;
    RealDataRightWidget *realDataRight;
    QHBoxLayout *mainLayout;

    void initui();

//    void insertSonserDataIntoDB(const QList<QTableWidgetItem*> &list);
    
};

#endif // REALDATAWIDGET_H
